package domena;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;

import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="UZYTKOWNICY")
public class Uzytkownik {

	private long id;
	private String imie;
	private String nazwisko;
	private String ulica;
	private int  dom;
	private String kod;
	private String miasto;
	private String panstwo;
	private String jezyk;
	private String grupa;
	private String about;
	private String pesel;
	private Date dataUrodzenia;
	private long telefon;
	private String mail;
	private boolean czyZaplacil;
	private Lektor lektor;
	private Ksiegowosc ksiegowosc;
	private Set<Ocena> ocena = new HashSet<Ocena>(
			0);
	
	@Id
	@Column(name="ID_UZYTKOWNIKA", unique = true, nullable = true)
	@GeneratedValue(strategy = IDENTITY)
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "LEKTOR_ID", nullable = true)
	public Lektor getLektor() {
		return this.lektor;
	}
 
	public void setLektor(Lektor lektor) {
		this.lektor = lektor;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "KSIEGOWOSC_ID", nullable = true)
	public Ksiegowosc getKsiegowosc() {
		return this.ksiegowosc;
	}
 
	public void setKsiegowosc(Ksiegowosc ksiegowosc) {
		this.ksiegowosc = ksiegowosc;
	}
	@Column(name="IMIE")
		public String getImie() {
			return imie;
		}
		public void setImie(String imie) {
			this.imie = imie;
		}
	@Column(name="NAZWISKO")
		public String getNazwisko() {
			return nazwisko;
		}
		public void setNazwisko(String nazwisko) {
			this.nazwisko = nazwisko;
		}		
	@Column(name="ULICA")
		public String getUlica() {
			return ulica;
		}
		public void setUlica(String ulica) {
			this.ulica = ulica;
		}
	@Column(name="DOM")
		public int getDom() {
			return dom;
		}
		public void setDom(int dom) {
			this.dom = dom;
		}
	@Column(name="KOD")
		public String getKod() {
			return kod;
		}
		public void setKod(String kod) {
			this.kod = kod;
		}
	@Column(name="MIASTO")
		public String getMiasto() {
			return miasto;
		}
		public void setMiasto(String miasto) {
			this.miasto = miasto;
		}
	@Column(name="PANSTWO")
		public String getPanstwo() {
			return panstwo;
		}
		public void setPanstwo(String panstwo) {
			this.panstwo = panstwo;
		}
	@Column(name="JEZYK")
		public String getJezyk() {
			return jezyk;
		}
		public void setJezyk(String jezyk) {
			this.jezyk = jezyk;
		}
	@Column(name="GRUPA")
		public String getGrupa() {
			return grupa;
		}
		public void setGrupa(String grupa) {
			this.grupa = grupa;
		}
	@Column(name="OSOBIE")
		public String getAbout() {
			return about;
		}
		public void setAbout(String about) {
			this.about = about;
		}
	@Column(name="PESEL")
		public String getPesel() {
			return pesel;
		}
		public void setPesel(String pesel) {
			this.pesel = pesel;
		}
	@Column(name="DATAURODZENIA")
		public Date getDataUrodzenia() {
			return dataUrodzenia;
		}
		public void setDataUrodzenia(Date dataUrodzenia) {
			this.dataUrodzenia = dataUrodzenia;
		}
	@Column(name="TELEFON")
		public long getTelefon() {
			return telefon;
		}
		public void setTelefon(long telefon) {
			this.telefon = telefon;
		}
	@Column(name="MAIL")
		public String getMail() {
			return mail;
		}
		public void setMail(String mail) {
			this.mail = mail;
		}
	@Column(name="CZYZAPLACIL")	 
		public boolean isCzyZaplacil() {
			return czyZaplacil;
		}
		public void setCzyZaplacil(boolean czyZaplacil) {
			this.czyZaplacil = czyZaplacil;
		}
	
	@OneToMany	(fetch = FetchType.LAZY, mappedBy = "uzytkownik")
		public Set<Ocena> getOcena() {
			return this.ocena;
		}
		public void setOcena(Set<Ocena> ocena) {
			this.ocena = ocena;
		}
	
}
